package com.review.day02;
/**
 * 类的创建过程(JVM虚拟机--内存创建流程：找 堆 方法区)
 *1.从程序入口 加载xxx.class文件.类对象存到方法中【方法区 并行】
 *2.如果发现 加载xxx.class文件中 存在static静态块 存入方法 创建对象之前提前调用
 *3.发现cs 引用 将这个引用转为地址值：如0X000,存入栈内存【栈区：并行】
 *4.发现new 对象()，在堆内存中 给对象申请【随意】空间
 *5.类创建【实例化】执行步骤，先执行方法区，静态块-->执行普通块代码-->初始化
 *6.给栈中生成的地址值进行指向，域内存中随意开辟空间(初始值)【与栈内存地址一致】
 *7.给栈中生成的地址值进行指向，域内存中随意开辟空间(赋值)【与栈内存地址一致】
 *
 * 通用过程：
 * 1.栈 编译器自动分配 使用完毕自动释放
 * 2.堆 一般由程序员分配释放 若程序员没有释放 java程序自动进行垃圾回收
 *                                      GC
 * 3.全局区（静态区）：全局变量和静态变量在内存中存在一起的
 *                  初始化的全局变量和静态变量存在一起的
 *                  未初始化的全局变量和未初始化的静态变量在相邻的另一块区域
 *               ---程序一旦结束 就自动释放
 */

public class 类的创建过程 {
     public static void main(String[] args){
 /*完成一次创建对象*/
         CountrySide cs=new CountrySide();
     }

}
/*测试类 类创建过程    一个java文件，创建两个类*/
class CountrySide{
   /*代码块*/
    {
        System.out.println("请问厕所在哪个科室：赵四");
    }
    /*静态代码块*/
    static{
        System.out.println("再别说，十个188");
    }
    /*①成员变量：变量，类中存在变量就是成员变量，可以由修饰符修饰*/
    private String name="赵四";
    private int age=56;
    /*②构造器|构造方法|句柄，创建对象初始化*/

}